package com.ssy.lingxi.logistics.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.SelectVO;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.logistics.api.dto.response.CommonSelectResponse;
import com.ssy.lingxi.logistics.model.request.SelectCompanyListRequest;
import com.ssy.lingxi.logistics.model.response.CompanyMemberSelectedResponse;
import com.ssy.lingxi.logistics.model.response.CompanySelectResponse;
import com.ssy.lingxi.logistics.model.response.ReceiverAddressSelectResponse;
import com.ssy.lingxi.logistics.model.response.ShipperAddressSelectResponse;

import java.util.List;

/**
 * 下拉数据服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/1/26
 */
public interface ISelectService {

    /**
     * 能力中心 - 物流公司查询全部(不同合作类型)
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<List<CommonSelectResponse>> listCompany(UserLoginCacheDTO loginUser, SelectCompanyListRequest request);

    /**
     * 能力中心 - 物流公司下拉查询(平台类型,模糊匹配)
     * @param loginUser 登录用户信息
     * @param name
     * @return 返回结果
     */
    Wrapper<List<SelectVO>> listMemberCompanyQuery(UserLoginCacheDTO loginUser, String name);

    /**
     * 平台后台 - 物流公司下拉查询(平台类型,模糊匹配)
     * @param name
     * @return 返回结果
     */
    Wrapper<List<SelectVO>> listPlatformMemberCompanyQuery(String name);

    /**
     * 能力中心 - 物流公司下拉查询(平台合作类型)
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<List<CompanySelectResponse>> listMemberCompany(UserLoginCacheDTO loginUser);

    /**
     * 能力中心 - 查询已添加的物流服务商
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<List<CompanyMemberSelectedResponse>> listMemberCompanySelected(UserLoginCacheDTO loginUser);

    /**
     * 能力中心 - 发货地址查询全部(按照是否默认排序)
     * @return 返回结果
     * @param memberId 会员id
     * @param roleId
     */
    Wrapper<List<ShipperAddressSelectResponse>> listShipperAddress(Long memberId, Long roleId);

    /**
     * 能力中心 - 发货人下拉查询
     * @return 返回结果
     * @param loginUser 登录用户信息
     * @param name
     */
    Wrapper<List<SelectVO>> listShipperSelect(UserLoginCacheDTO loginUser, String name);

    /**
     * 能力中心 - 收货地址查询全部(按照是否默认排序)
     * @return 返回结果
     * @param memberId 会员id
     * @param roleId
     */
    Wrapper<List<ReceiverAddressSelectResponse>> listReceiverAddress(Long memberId, Long roleId);

    /**
     * 能力中心 - 运费模板下拉框
     * @return 返回结果
     * @param loginUser 登录用户信息
     */
    Wrapper<List<CommonSelectResponse>> listFreightTemplate(UserLoginCacheDTO loginUser);
}
